perm filename HOW[D,LES] blob sn#343691 filedate 1978-03-21 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002		LESCAL	Calendar-maker.				Dec. 1974
C00004 00003		FINGER	Locates people on the system or tells when they last ran.  Jan.'78
C00011 00004		KWIC	Keyword in context program		Dec. 1973
C00018 00005		FREEFO	Text macro processor				March 1973
C00020 00006		SOB	Son of Bureaucracy (computer time accounting)	Jan. 1978
C00024 00007		BUREAU	Computer time accounting (old style)		Oct. 1975
C00031 00008		XGPTYP	Converts XGP file to text form			Dec. 1975
C00032 00009		PARRY	A model paranoid			Sept. 1977
C00033 00010		RSL	Service Level Reservations
C00034 00011		COOL	Summarizes temperature & computer uptime.	Jan. 1978
C00039 ENDMK
CāŠ—;
	LESCAL	Calendar-maker.				Dec. 1974

A program for printing or typing calendars in any of 63 formats.  To run, say
"R LESCAL" and answer the questions.

Documentation:	self-documented, with a sprinkling of political commentary.
Programmer:	LES
Source file:	LESCAL.MAC[CSP,SYS] (written in MACRO-10 before FAIL was invented).

	FINGER	Locates people on the system or tells when they last ran.  Jan.'78

Programmer:	LES
Source file:	FINGER.SAI[F,ACT]

			NETWORK FINGER
A FINGER command containing %<site name> will now attempt to finger people
at other Arpanet sites.  It does this by connecting to the FINGER socket
at the specified site and passing the rest of whatever you typed (before
and after the "%<site name>" to the host.  If that host supports Network
Finger, then you get whatever they return.

For example, "FING TK%AI" tells you about Tom Knight at MIT-AI and
"FING %SRI" tells you about everyone who is running on SRI-KL.  At this
writing, only the following sites respond to a network FINGER:
all MIT ITS sites (ai, mc, ml, dm), sri-kl, sri-ka, and office-1.
More will be joining shortly.

Normally only one site can be specified in a single FINGER command, but if
you would like to waste some time, say "FING %*" and it will tell you
about everyone out there.

			DOMESTIC FINGER
The system command "FING" shows data on all jobs, in order by programmer
initials.  The "IDLE" column shows the time, in minutes, since the given
job was last in the RUN queue.  If the job is currently in the STOP or
NULL queues, a "." follows.

If there is a digit in the next column, it represents the number of extra
Data Disc channels that belong to this job.

Finally, the "Terminal" part shows the location of the owner (the terminal
that last typed something at this job).  "detached", of course means just
that.  "disowned" means that the terminal that last owned this line has
released it.  "TV" means that this is a television (Data Disc) terminal
that is displaying the channel currently.  "tv" means that the terminal
that owns this job isn't looking at it.

If terminals other than the owner are viewing this job's main channel,
then they are listed on subsequent lines, with the job field blank.  If
you want to know the TTY# rather than the physical terminal, use WHERE or
WHO rather than FINGER.

			   POINTING THE FINGER
The command "FING <people list>" shows data only on the specified people.
For example, "FING JMC,DAVE,WILL" requests information on programmer JMC
and anyone whose first or last name begins with "DAVE" or "WILL".
String matching uses the following precedence:
  1) exact match on programmer initials,
  2) exact match on friendly or last names,
  3) match on leading characters of friendly or last names.
If a given string matches more than one person at a given level, it
reports "ambiguous" and lists their names.

If only one person is specified and he is not logged in, it normally tells
when he last logged out and shows his plan file, if any, but this can be
suppressed with switches (see below).

			FILE LISTS
Arguments in the FINGER command are separated by commas and/or spaces.
An argument of the form "@<file name>" causes that file to be read.
Files can include references to other files, ad nauseum.  In files,
everything to the right of a semicolon on a given line is ignored,
so that comments can be put there.

The default file extension is "DIS" and the default PPN is "[P,DOC]".
Thus if you say "FING @H", it will first look for a file in you area
called "H".  If that doesn't exist, it will next try "H.DIS" in your
area and, if necessary, "H.DIS[P,DOC]", the latter being the list of
hand-eye people which is kept in [P,DOC] along with other group lists
(see SAIL Telephone Directory).

			SWITCHES
Normally, if only one person is specified in the FINGER command and he is
not logged in, the time of his last logout and plan file, if any, are
given.  This printout can be suppressed by using the "-LOGOUT" or "-PLAN"

You can force printing of last logout or plan files even for lists of
people by using the "/LOGOUT" or "/PLAN" switches, which can also be
abbreviated to one letter.  Thus "FING @VB/L" lists everyone on the
volleyball list who is logged in and, for the rest,  the time of their
last logout.

			DOCUMENTATION
The command "FINGER ?" will cause this description to be printed out.
	KWIC	Keyword in context program		Dec. 1973

Programmer:	LES
Source file:	KWIC.SAI[S,LES]

This program can be used to produce a concordance, index, word count, or
word list for any given text file.  To run, say "R KWIC".  The simplest
command that it understands is:

*<source file name>

This  causes the  source file  to  be scanned  for  words, which  are
compared with  an internal dictionary of common  words.  Any that are
not in the dictionary are  considered to be "keywords".  The  program
produces  an output  file,  in this  case  called <source>.KWC,  that
contains  an alphabetized  list of  keywords, one per  line, together
with the local context and a reference to the page  and line on which
they  occur.  It  also  lists  the  number  of  occurrences  of  each
dictionary word.  A typical output might begin as follows.

                       Concordance of SIGNUP[W,LES]                        
                    275 keywords, 961 dictionary words                     

                                47 a
                                 5 about
Page Line                          ------
  5   22                 A roll of adhesive tape or electrical tape.  
                                 6 after
Page Line                          ------
  1   30  August 16 at noon in the AI Conference Room.  
                                 2 air(s)(ed)(ing)
                                 3 all
Page Line                          ------
  3   15         If you come to an ambiguous fork in the trail, preferably 
                                 1 among
  ......

Numbers appearing  just to  the left  of center  are word counts  for
dictionary  words (with  various suffixes), while  the page  and line
numbers point to the locations of keywords in the  original document.
Line numbers are counted from the top  of the page.  SOS line numbers
(if  any) are ignored, as are TV/E  directory pages,  though the page
numbering includes  the directory.   Words  beginning with  different
letters of the alphabet are placed on different output pages.

			General Command Format

The more general command format is:

*[<output file>←]<source file>[/ONLY | /ALL][/INDEX | /COUNT | /LIST]

where bracketed  elements are optional  and alternative  switches are
separated by "|".  Both source and output files must be on the disk.

All  switches may  be abbreviated  to one letter.   The  /ONLY switch
causes only keywords to be  listed in the output file (i.e.  omitting
counts of dictionary  words).  The /ALL switch  causes the dictionary
to  be ignored,  so  ALL words  are treated  as keywords.  (Beware: a
concordance produced  with the ALL  switch on  is typically about  10
times the size of the original document.

The /INDEX  switch causes  the context to  be omitted and  produces a
three-column listing of words and their original locations (page  and
line) or number of occurrences (dictionary words).  The /COUNT switch
causes word  counts only to be generated  for keywords and produces a
four-column listing of  these counts.   The /LIST  switch produces  a
raw,  seething word  list (i.e.  an  alphabetized list  of all  words
used), one  per line, with no header information, and all on one long
page.

			 Scanning Procedure

KWIC treats as a word any alphanumeric string beginning with a letter
and  possibly containing "'", "-",  or "/", but nothing  else.  Thus,
things beginning with digits are ignored.  Words hyphenated over line
boundaries are reassembled.

In order to provide as much context as possible for each keyword, the
text is "dejustified" within each paragraph, so that redundant spaces
between words are removed and successive lines are concatenated, with
a <space> replacing  the <CRLF>. A new paragraph  is assumed to begin
whenever there is  a blank  line, a  <TAB> in  column 1,  or a  <form
feed>.
	FREEFO	Text macro processor				March 1973

Programmer:	LES
Source file:	FREEFO.LES[UP,DOC]
Documentation:	FREEFO.LES[UP,DOC]

Freeforol is a text macro processor that can be used to generate form
letters  and other fill-in-the-blanks text.  If you say  R FREEFO, it
types a "*" and expects a keyboard input of the form
    <source file list>
or
    <destination file>←<source file list>
where the  <source  file list>  consists of  one or  more file  names
separated  by  commas.    These  must  be  text  files  and  will  be
effectively concatenated in the order given.

	SOB	Son of Bureaucracy (computer time accounting)	Jan. 1978

Programmer:	LES
Source File:	SOB.SAI[F,ACT]

To get a summary of computer usage by project, just type <carriage
return>.  This lists projects in order of decreasing "doubloons" (a
linear function of computer cost components on a somewhat arbitrary
scale).

In calculating this cost, "B time" charges (weekday mornings and
evenings, weekend afternoons) are reduced by a factor of 2 and "C time"
is reduced a factor of 3.  The doubloon cost is also shown as a percentage
of overall computer utilization (excluding system services such as
spooling, accounting, and news service).

Next, the number of logins is given and the percentage of A time, B time,
and C time, based on the doubloon calculation with no discounting.
The last three items are the average core size, CPU utilization (CPU time/
job time), and load average while computing.

There are three possible commands: GROUP, PN, and MOST.  All commands and
switches may be abbreviated so long as they are unambiguous (one letter
will do).  Cases are ignored.  The default command, described above, is
equivalent to GROUP without an argument.  If an argument is given, then it
is matched against the leading characters of the various group names to
select one (e.g. the command "g hand" will retrieve data on the Hand-eye
project).

The PN command with a programmer ID as an argument will get data on that
individual alone.  Without an agument, it exhaustively lists the accounting
data in order by PN, omitting null entries.

The MOST command without an argument lists the 20 heaviest users.  An
integer argument causes that many of the heaviest users to be listed.

			SWITCHES
The /DETAIL switch has effect only on the GROUP command and causes data
for individuals in each group to be listed in order of decreasing cost.
The /FILE switch will subsequently ask for a name and direct output there.
/SPOOL and /XSPOOL do what you would expect.

The /RAW switch is mostly for debugging and causes raw accounting data to
be printed together with a (rough) explanatory heading.
	BUREAU	Computer time accounting (old style)		Oct. 1975

Programmer:	LES
Source File:	BUREAU.SAI[F,ACT]

To find out how much computer time has been  used by any given group
in the period 1971-77, say
.R BUREAUCRACY		(actually, just "R BUREAU" will do).
The program will ask for  dates, PPN lists, and output form.   If you
give  null   responses  (CR)  to  all   requests,  the  program  will
automatically show a summary of computer utilization by  project from
the beginning of the current year through yesterday.

Data covered include number of PPNs, number of logins, job hours, CPU
minutes, core  K minutes, and "Doubloons"  (an approximate measure of
overall cost on  an arbitrary scale).   The entries  are in order  of
decreasing doubloons, except that "All others" is always last.

			DATES

Alternatively, you can  "roll your own".   The raw data is  stored by
PPN for each month over the past year and for each year back to 1971.
When it asks  for dates,  you can say something like "Jul:Oct", which
may or may not work.  If  the current date is December, this gives
you data  for the  current year.   If the current  date is  May, last
year's data is used.  If you say that in July, August,  or September,
it will simply complain.  It doesn't hurt to ask.

If you say just "May" then you get data for the last instance of that
month only.   If you say  ":May" you get data  from 1 January through
May.  If you say 72 or  1972, you get data for that entire year.   If
You mention the  current year, or if you just  hit <carriage return>,
you get year-to-date data.

			PPNs

When the program asks for PPNs, you can say something like:

Bureaucrats:JMC,LES,TW; Bad guys:REG,[SPL,SYS]; Classes: [206],[225]
which will gather data on three groups, separated by ";". Labels (one
or more  words ending in ":") may appear  anywhere in the group list.
If you omit labels,  the groups will be  named "Group 1", "Group  2",
etc.

More generally, the following elements may appear in PPN lists:

group label:pn,[pj],[pj,pn],[*,pn],[pj,*],@file,@@,/SUMMARY

Nothing need be capitalized.  [pj] is of course equivalent  to [pj,*]
and pn means [*,pn].  If a given PPN qualifies for membership in more
than one group, then [pj,pn]  takes precedence over [pj,*], which  in
turn outranks [*,pn].  If you  mention exactly the same thing in more
than  one group the  program will grumble, but  will ignore conflicts
and continue.

Now about the "@file" gizmo: This lets  you compose a horrendous list
as a  text file and gobble it into the middle  of the line.  The file
name may contain a PPN.  Any TV/E directory or SOS line  numbers will
be ignored.   While the on-line  response is restricted to  one line,
the  text file may  contain many  lines.  It  will be read  as if the
carriage returns don't exist. You can go indirect any number of times
and  any  number  of  levels,  though  string  space  may  freak  out
eventually.

The "@@"  form says "go read  the telephone list".   This will assign
everyone to  groups on the basis of project affiliations given in our
telephone directory.   Individuals who are  in more than one  project
are  arbitrarily pushed into  the first  one on  their list.   People
without a listed project are dumped into "Miscellaneous".  Of course,
this  still  leaves a  few  "outlaws"  who  are  not on  any  of  our
authorized  user lists.   You can precede  the "@@" with  one or more
group  lists of  your  own,  which  will  take  precedence  over  the
directory groupings.

			OUTPUT

After the  data  is generated,  the program  repeatedly  asks for  an
output specification of one of the following kinds:
 <blank>		type a summary
 *			type detailed listing
 S			spool a summary
 S*			spool details
 <file>			save summary in file
 <file>*		save details in file.
 .			loop back to respecify PPNs and dates.

On reruns, the null reply to PPN and  Date questions means "just like
last time".  Thus,  you can easily ask for data from a different time
period with the same  cast of characters, or  for the same time  with
another group.
	XGPTYP	Converts XGP file to text form			Dec. 1975

Programmer:	REG; modified by HJS & LES
Source file:	XGPTYP.SAI[CSP,SYS]

XGPTYP converts an XGP file into a straight text representation of the
various XGP commands.  Handy for debugging document compilers.  It prompts
for a source file name.  The default source file extension is "XGP".
Output goes either to a destination file or, if none is given, to your TTY.

	PARRY	A model paranoid			Sept. 1977

A natural language "understanding" program that pretends to be a paranoid if
you pretend to be a psychiatrist.  To run, say "R HARRY" and answer the
various questions about options any way you like, but type in upper case.
One good set of answers is: "Y", "M", "N", "N", "Y", "N".

Programmer:	KMC, BLF, etc.
Source file:	unknown (in MLISP)
Documentation:	William Faught, "Motivation and Intensionality in a Computer
		Simulation Model", Memo AIM-305, Thesis: Ph.D. in Computer Science,
		September 1977.
	RSL	Service Level Reservations

Programmer:	Jim Stein; modified by REG & LES
Documentation:	Monitor Manual appendix (SAILON 54)

Used to reserve service level and certain devices, as described in a Monitor
Manual appendix.
	COOL	Summarizes temperature & computer uptime.	Jan. 1978

Programmer:	LES
Source files:	COOL.SAI[T,ACT]

COOL retrieves and summarizes temperature and computer uptime history.
Source files are maintained by the THERMO phantom and exist from
1 January 1978 to date.

COOL asks for the date range, which can take many forms, e.g.
  23	   (the last occurrence of that date, this month or last)
  Feb	   (entire month of February or, if in February, month to date),
  78	   (all of 1978),
  2:5 Jan  (2nd through 5th of January inclusive),
  0 or <null>  (today),
  -1	   (yesterday, -2 for day before, etc.).
Any combination of <date>:<date> can be used, with at least 3 letters of
the month given.  COOL will try to do something sensible even if you leave
some elements unspecified, such as the year.

You can use one-line commands, e.g. "R COOL;-6:0" retrieves data for
the last seven days.

				OUTPUT
COOL normally lists the system downtime and availability (%).  Next, the
number of system reloads is given, if any, as well as the mean time
between reloads, the total number of service breaks, and mean time between
service breaks.  A "break" is defined as either a reload or a pause.
Only pauses longer than 2 minutes can be detected and some up to 12
minutes may escape detection.

Next, it lists the high and low temperatures and the times at which they
occurred, and the mean temperature.  Temperatures are given both in
Celsius and Fahrenheit and are normally outside air temperatures, but can
be switched to the computer room temperature (see below).

				SWITCHES
Switches may be added to the end of the command line, preceded by "/".
Switches may be abbreviated to as little as one letter.
  /INSIDE    gives computer room temperatures rather than outside,
  /BREAKS    gives detailed listings on all service breaks (reloads or pauses),
  /-BREAKS    suppresses all information on breaks, including the summary,
  /SPOOL     both displays and Spools the requested information,
  /XSPOOL    both displays and Xspools,
  /FILE      puts a copy in a file, after asking you for the file name.
  /TIME=<interval>  lists temperatures at the specified interval, which
	     defaults to 10 minutes (the minimum).  For example, "/T=2:00"
	     lists temperatures at 2 hour intervals.  Intervals greater than
	     24 hours cause only the temperature at midnight to be listed.
If you use more than one of the SPOOL, XSPOOL, or FILE switches, it will
use the last one given.